#pragma once

#include "FXValue.h"
/**
* Wrapper around a float4 (x,y,z,w)
* @author Koen Samyn
*/ 
class DAEFloat4: public FXValue
{
public:
	/**
	*
	* Creates a DAEFloat4 object with default values
	* [0,0,0,0]
	*/
	DAEFloat4();
	/**
	* Creates a DAEFloat4 object with initial values.
	* @param xValue the initial xValue.
	* @param yValue the initial yValue.
	* @param zValue the initial zValue.
	* @param wValue the initial wValue.
	*/
	DAEFloat4(float xValue, float yValue, float zValue, float wValue);
	/**
	* Sets the values for this DAEFloat4 object.
	* float x the new x value.
	* float y the new y value.
	* float z the new z value.
	* float w the new w value.
	*/
	void SetValues(float x,float y,float z, float w);
	/**
	* Computes the dot product with another DAEFloat4 object.
	* @param vector2 the second operand in the dot product.
	* @return the dot product.
	*/
	float Dot(const DAEFloat4& vector2) const;
	/**
	* Returns the size of the value in bytes.
	* @return the size in bytes.
	*/
	virtual int GetSizeInBytes() const{
		return 4*sizeof(float);
	}
	/**
	* Returns the pointer to the beginning of the value.
	* @return a void pointer to the beginning of the value.
	*/
	virtual const void* GetValuePointer() const{
		return &x;
	}
	/**
	* float4 datamembers
	*/
	float x,y,z,w;
private:
};
